﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace HelpDesk
{
    public partial class CrearIncidencia : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                for(int i=0;i<40;i++)
                {
                    ddl_urgencia.Items.Add(i.ToString());
                }
                QueryBuilder Fill_Usuarios = new QueryBuilder();
                string sql = "Select id_usuario, nombres || ' ' || apellidos as usuario from USUARIO"
                            + " where Usuario.status = 'A'";
                DataTable Usuarios = Fill_Usuarios.EjecutarQuery(sql);
                ddl_usuario.DataSource = Usuarios;
                ddl_usuario.DataTextField = "usuario";
                ddl_usuario.DataValueField = "id_usuario";
                ddl_usuario.DataBind();
            }
        }
        protected void Fill_Problema(object sender, EventArgs e)
        {
            QueryBuilder Consulta = new QueryBuilder();
            DataTable GetData = new DataTable();
            string sql;
            sql = "Select * from PROBLEMA WHERE INFRAESTRUCTURA =" + ddlInfraestructura.SelectedValue.ToString();
            GetData = Consulta.EjecutarQuery(sql);
            ddlProblema.Items.Clear();

            if (GetData.Rows.Count != 0)
            {
                for (int i = 0; i < GetData.Rows.Count; i++)
                {
                    ddlProblema.Items.Add(GetData.Rows[i].ItemArray[1].ToString());
                }
            }
            else
            {
                Response.Write("<script language=javascript>alert('Hubo un problema con crear la incidencia');</script>");
                Page_Load(null, null);
            }
        }

        protected void ckbNuevo_CheckedChanged(object sender, EventArgs e)
        {
            Label1.Visible = true;
            txtNuevo.Visible = true;
            lblProblema.Visible = false;
            ddlProblema.Visible = false;
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            QueryBuilder Consulta = new QueryBuilder();
            DataTable GetID = new DataTable();
            DataTable GetUser = new DataTable();
            DataTable GetPrioridad = new DataTable();
            Utilitario Utilidades = new Utilitario();
            string sql;

            GetID = Consulta.EjecutarQuery("select ID_PROBLEMA from PROBLEMA where DESCRIPCION='" + ddlProblema.SelectedItem.Text + "'");
            int id_problema = Convert.ToInt32(GetID.Rows[0].ItemArray[0]);

            GetPrioridad = Consulta.EjecutarQuery("select ID_PRIORIDAD from prioridad where impacto = '" 
                + impacto.SelectedValue.ToString() + "' and " + ddl_urgencia.SelectedItem.ToString() 
                + " >= urgencia_inicio and " + ddl_urgencia.SelectedItem.ToString() + " <= urgencia_fin");

            if (ddl_usuario.SelectedValue.ToString() != " ")
            {           
            string id_infra = ddlInfraestructura.SelectedValue;
            string id_area = ddlArea.SelectedValue;


                if (ckbNuevo.Checked == false)
                {
                    sql = "INSERT INTO TICKET(ID_TICKET, USUARIO_TICKET, USUARIO_ADMIN, INFRAESTRUCTURA, TICKET_DESC, FECHA_INICIO, STATUS, PROBLEMA, AREA_ORIGEN,PRIORIDAD) " +
                        "VALUES(TICKET_SEQ.NEXTVAL, '" + ddl_usuario.SelectedValue.ToString() + "', '" + Session["Usuario"].ToString() + "', " + id_infra + ", '" + txtDescripcion.Text + "' , sysdate" +
                        ", 'ENC', " + id_problema + ", " + id_area + ", " + GetPrioridad.Rows[0].ItemArray[0].ToString() + ")";
                    txtNuevo.Visible = false;
                }
                else
                {
                    if (txtNuevo.Text != "")
                    {
                        //se inserta en la tabla Problema el nuevo problema

                        string sql2 = "SELECT PROBLEMA_SEQ.NEXTVAL FROM DUAL";
                        GetID = Consulta.EjecutarQuery(sql2);

                        sql2 = "insert into PROBLEMA (ID_PROBLEMA,DESCRIPCION,INFRAESTRUCTURA) values (" + GetID.Rows[0].ItemArray[0].ToString() + ", '" + txtNuevo.Text + "'" + "," + id_infra + ")";
                        Consulta.EjecutarNoQuery(sql2);

                        // mensaje de que se creo exitosamente el nuevo 
                        Response.Write("<script language=javascript>alert('Problema ingresado exitosamente!!');</script>");
                    }

                    else
                    {
                        Response.Write("<script language=javascript>alert('Debe de ingresar una descripcion');</script>");

                    }

                    sql = "INSERT INTO TICKET(ID_TICKET, USUARIO_TICKET, USUARIO_ADMIN, INFRAESTRUCTURA, TICKET_DESC, FECHA_INICIO, STATUS, PROBLEMA, AREA_ORIGEN,PRIORIDAD) " +
                       "VALUES(TICKET_SEQ.NEXTVAL, '" + ddl_usuario.SelectedValue.ToString() + "', '" + Session["Usuario"].ToString() + "', " + id_infra + ", '" + txtDescripcion.Text + "' , sysdate" +
                       ", 'ENC', " + GetID.Rows[0].ItemArray[0].ToString() + ", " + id_area + ", " + GetPrioridad.Rows[0].ItemArray[0].ToString() + ")";

                }

                try
                {
                    ValidarDato objValida = new ValidarDato();
                    bool esSQLInjection1 = objValida.esCadenaConSQL(txtNuevo.Text);
                    bool esSQLInjection2 = objValida.esCadenaConSQL(txtDescripcion.Text);
                    bool esSQLInjection3 = objValida.esCadenaConSQL(ddl_usuario.SelectedValue.ToString());
                    bool esAlfanumerico1 = objValida.esAlfanumerico(txtNuevo.Text);
                    bool esAlfanumerico2 = objValida.esAlfanumerico(txtDescripcion.Text);
                    bool esAlfanumerico3 = objValida.esAlfanumerico(ddl_usuario.SelectedValue.ToString());
                    if (esAlfanumerico1 == true || esAlfanumerico2 == true || esAlfanumerico3 == true)
                    {
                        if (esSQLInjection1 == false || esSQLInjection2 == false || esSQLInjection3 == false)
                        {
                            Consulta.EjecutarNoQuery(sql);
                            Response.Write("<script language=javascript>alert('Se ha creado la incidencia  con exito!');</script>");
                        }
                    }
                }
                catch
                {
                    Response.Write("<script language=javascript>alert('Error al crear la incidencia, verifique los campos');</script>");
                }
                ddl_usuario.Items.Clear();
                ddlProblema.Items.Clear();
                ckbNuevo.Checked = false;
                txtNuevo.Text = "";
                txtDescripcion.Text = "";
            }
            else
            {
                Response.Write("<script language=javascript>alert('Error al crear la incidencia, No existe el usuario');</script>");
            }

        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            ddl_usuario.Items.Clear();
            ddlProblema.Items.Clear();
            ckbNuevo.Checked = false;
            txtNuevo.Text = "";
            txtDescripcion.Text = "";
        }
    }
}
